from pyspark import SparkConf, SparkContext

if __name__ == '__main__':
    # 构建SparkConf对象
    conf = SparkConf().setAppName("test").setMaster("local[*]")
    # 构建SparkContext执行环境入口对象
    sc = SparkContext(conf=conf)

    rdd = sc.parallelize(["a", "b", "c", "e", "d", "b", "b", "b"])

    result = rdd.takeSample(False, 20)
    """
    takeSample: 随机抽样RDD数据
    参数1: 是否允许重复抽取同一个数据，和数据内容无关，是否重复是表示同一个位置的数据
    参数2: 抽样数量
    参数3: 随机数种子，不传，默认随机，如果传同一个数字当作种子，那么抽样重复多次，结果都是一样的
    """

    print(result)
    # 输出结果 ['d', 'b', 'b', 'c', 'a', 'b', 'e', 'b']

    result2 = rdd.takeSample(True, 20)
    print(result2)
    # 会重复抽取元素
    # 输出结果 ['a', 'c', 'b', 'e', 'b', 'b', 'b', 'd', 'b', 'b', 'b', 'd', 'a', 'b', 'b', 'c', 'b', 'b', 'b', 'd']
